home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Utilities / Winter Shell 1.0d2 / Source / Libraries / FileLib / FileAttrLib.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-10  |  1.3 KB  |  56 lines  |  [TEXT/KAHL]

  1. /* Getting and setting various file attributes (position, length, lock, etc.)
  2.     94/01/10 aih FileSize works even on closed files
  3.     93/10/14 aih removed functions for locking/unlocking a file
  4. */
  5.  
  6. #include <limits.h>
  7. #include <string.h>
  8. #include "MemoryLib.h"
  9. #include "StringLib.h"
  10. #include "FileLib.h"
  11.  
  12. /* this is just like GetFPos */
  13. FilePosType FilePosition(FileType *fp)
  14. {
  15.     FilePosType position;
  16.     require(FileValid(fp));
  17.     require(fp->ref != FILE_CLOSED);
  18.     FailOSErr(GetFPos(fp->ref, &position));
  19.     return(position);
  20. }
  21.  
  22. /* this is just like SetFPos */
  23. void FileSeek(FileType *fp, FileSeekType seek, FilePosType position)
  24. {
  25.     require(FileValid(fp));
  26.     require(fp->ref != FILE_CLOSED);
  27.     require(position >= 0);
  28.     FailOSErr(SetFPos(fp->ref, seek, position));
  29. }
  30.  
  31. /* this is just like GetEOF, but works also on closed files */
  32. FilePosType FileSize(FileType *fp)
  33. {
  34.     FilePosType size;
  35.     CInfoPBRec catalog;
  36.     
  37.     require(FileValid(fp));
  38.     require(FileExists(fp));
  39.     if (fp->ref != FILE_CLOSED)
  40.         FailOSErr(GetEOF(fp->ref, &size));
  41.     else {
  42.         FileCatalog(fp, &catalog);
  43.         size = catalog.hFileInfo.ioFlLgLen;
  44.     }
  45.     return(size);
  46. }
  47.  
  48. /* this is just like SetEOF */
  49. void FileResize(FileType *fp, FilePosType size)
  50. {
  51.     require(FileValid(fp));
  52.     require(fp->ref != FILE_CLOSED);
  53.     require(size >= 0);
  54.     FailOSErr(SetEOF(fp->ref, size));
  55. }
  56.